package Decorator;

public abstract class ShapeDecorator implements Shape{

    protected Shape decoratedShape;
    /* 【protected】详解~
    基类的 protected 成员是包内课件的, 并且对 子类可见;

    若子类与基类不在同一组包中, 那么在子类中, 【子类实例】可以访问其从基类继承而来的 【protected 方法】,而不能访问【基类实例】的 protected方法
     */

    public ShapeDecorator(Shape decoratedShape){
        this.decoratedShape = decoratedShape;  // 传入 Shape 的子类型等也是可以的
    }

    public void draw(){
        decoratedShape.draw();
    }

}
